import { useState } from 'react'

function checkParams(params) {
  return typeof params === 'function' ? params() : params
}

export default function useMyState(params) {
  // useState初始值可能是一个方法，需要先判断并调用
  params = checkParams(params)
  const [state, setState] = useState(params)

  return [
    state,
    function (params, callback) {
      // 与初始化时一样，需要判断是否是一个方法
      params = checkParams(params)
      // 调用外部方法，将计算后的值传出进行二次调用
      typeof callback === 'function' && callback(params)
      // 调用react内部方法，更新state
      setState(params)
    },
  ]
}
